#include <Klein/Shader/ParameterGroup.h>

ParameterGroup::ParameterGroup()
{
}

ParameterGroup::ParameterGroup(const ParameterGroup& parameterGroup) :
	mParameters(parameterGroup.mParameters)
{
}

ParameterGroup::~ParameterGroup()
{
}

bool ParameterGroup::AddParameter(const Parameter& parameter)
{
	if (mParameters.find(parameter.GetName()) == mParameters.end())
	{
		mParameters.insert(std::make_pair(parameter.GetName(), parameter));

		return true;
	}

	return false;
}

void ParameterGroup::SetParameter(const String& parameterName, const String& parameterValue)
{
	std::map<String, Parameter>::iterator itr = mParameters.find(parameterName);
	if (itr != mParameters.end())
	{
		itr->second.SetRawValue(parameterValue);
	}
}

const std::map<String, Parameter>& ParameterGroup::GetParameters() const
{
	return mParameters;
}
